package com.diagrammer.vo
{
	import mx.utils.UIDUtil;

	[Bindable]
	/**
	 * 节点value object
	 * 
	 * @author Dwei <b>2012-02-10</b>
	 * 
	 */	
	public class NodeVO
	{
//============================================================================
//parameter
//============================================================================
		private var _ID:String;
		
		private var _label:String;
		
		private var _data:XML;
		
		private const _parent:Array = [];
		
		private const _children:Array = [];
		
		private const _lines:Array = [];
//============================================================================
//constructor
//============================================================================
		public function NodeVO()
		{
			_ID = UIDUtil.createUID().replace(/-/g, "");
			_label = "";
		}
//============================================================================
//getter/setter
//============================================================================

		/**
		 * 节点唯一标识，忽略空字符串和null<br/>
		 * 默认为32位字符串(数字+大写字母)
		 */		
		public function get ID():String
		{
			return _ID;
		}

		public function set ID(value:String):void
		{
			if (!value) return;
			_ID = value;
		}

		/**
		 * 节点名称，可以空字符串，不可以为null
		 */
		public function get label():String
		{
			return _label;
		}

		/**
		 * @private
		 */
		public function set label(value:String):void
		{
			if (!value) return;
			_label = value;
		}

		/**
		 * 节点数据
		 */
		public function get data():XML
		{
			return _data;
		}

		/**
		 * @private
		 */
		public function set data(value:XML):void
		{
			_data = value;
		}

		[ArrayElementType("String")]
		/**
		 * 指向该节点的节点ID集合
		 */
		public function get parent():Array
		{
			return _parent;
		}

		[ArrayElementType("String")]
		/**
		 * 该节点指向的节点ID集合
		 */
		public function get children():Array
		{
			return _children;
		}

		[ArrayElementType("String")]
		/**
		 * 节点关联的线条标识
		 */
		public function get lines():Array
		{
			return _lines;
		}


	}
}